package com.wutongyu.mannyburger;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import java.util.ArrayList;
import java.util.List;

public class CommentFragment extends Fragment {

    private static final String TAG = "CommentFragment";
    private ListView commentListView;
    private CommentAdapter adapter;
    private List<Comment> commentList;
    private CommentDatabaseHelper dbHelper;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_comment, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        commentListView = view.findViewById(R.id.comment_list_view);
        commentList = new ArrayList<>();
        dbHelper = new CommentDatabaseHelper(requireContext());

        // 注意：CommentAdapter 可能需要调整以在 Fragment 中使用，特别是如果它内部持有 Context
        // 假设 CommentAdapter 构造函数接受 Context 和 List<Comment>
        adapter = new CommentAdapter(requireContext(), commentList);
        commentListView.setAdapter(adapter);

        // 加载评论数据
        loadCommentsFromDatabase();

        // 如果需要在评论列表项中处理点击事件（例如播放视频）
        // 需要在 CommentAdapter 或此处设置 setOnItemClickListener
        commentListView.setOnItemClickListener((parent, view1, position, id) -> {
            Comment clickedComment = commentList.get(position);
            if (clickedComment.getVideo() != null && !clickedComment.getVideo().isEmpty()) {
                // 与 CommentActivity 中的 startVideoPlayActivity 类似
                // 但需要从 Fragment 启动 Activity
                if (getActivity() instanceof MainActivity) { // 确保 Activity 存在且类型正确
                    ((MainActivity) getActivity()).startVideoPlayActivity(clickedComment.getVideo());
                } else if (getActivity() instanceof CommentActivity) { // 可能存在的旧代码路径
                     ((CommentActivity) getActivity()).startVideoPlayActivity(clickedComment.getVideo());
                } else {
                     Log.w(TAG, "无法启动视频播放，Activity 上下文无效或类型错误。");
                }
            } 
        });
    }

    // 加载评论数据库
    private void loadCommentsFromDatabase() {
        Log.d(TAG, "从数据库加载评论...");
        try {
            List<Comment> comments = dbHelper.getAllComments();
            commentList.clear();
            commentList.addAll(comments);
            // 确保在主线程更新 UI
            if (getActivity() != null) {
                 getActivity().runOnUiThread(() -> adapter.notifyDataSetChanged());
            }
            Log.d(TAG, "成功加载 " + comments.size() + " 条评论。");
        } catch (Exception e) {
            Log.e(TAG, "加载评论时出错", e);
        }
        // 注意：原始 CommentActivity 中有添加示例数据的逻辑，这里不添加，
        // 假设数据库中已有数据或通过其他方式添加。
        // 如果需要示例数据，可以在第一次加载时检查是否为空并添加。
    }

    // 在 Fragment 中添加对 Activity 方法的调用（如果需要的话）
    // 这个方法需要在 MainActivity 中实现
    /*
    private void startVideoPlayActivity(String videoPath) {
        if (getActivity() instanceof MainActivity) {
            ((MainActivity) getActivity()).startVideoPlayActivity(videoPath);
        }
    }
    */

     @Override
     public void onDestroyView() {
         super.onDestroyView();
         // 清理资源，关闭数据库连接
         if (dbHelper != null) {
             dbHelper.close();
             dbHelper = null;
         }
     }
} 